## Rows: 289
## Columns: 9
## $ TITLE <chr> "Hello.. #hello #monday #january #winter #day #work #l~
## $ MENTION_SNIPPET <chr> "Hello.. #hello #monday #january #winter #day #work #l~
## $ DATE <chr> "2022-01-10", "2022-01-08", "2022-01-07", "2022-01-06"~
## $ SOURCE_TYPE <chr> "instagram", "twitter", "instagram", "twitter", "forum~
## $ AUTHOR <chr> "anonymous_user", "Sarlo", "anonymous_user", "<U+0001D4EB><U+0001D4F8><U+0001D4F8><U+0001D4F4><U+0001D4EA> <U+0001D4EB><U+0001D4F8>~
## $ FROM <chr> "anonymous_user", "Sarlo", "anonymous_user", "<U+0001D4EB><U+0001D4F8><U+0001D4F8><U+0001D4F4><U+0001D4EA> <U+0001D4EB><U+0001D4F8>~
## $ kword <chr> "Nespresso", "Nespresso", "LatteGo", "Nespresso", "Nes~
## $ datum <date> 2022-01-10, 2022-01-08, 2022-01-07, 2022-01-06, 2022-~
## $ clanak <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,~
U sljedećem koraku provodimo tokenizaciju, odnosno pretvaranje teksta na jedinice analize koje su u ovom slučaju su riječi:
Potom valja očistiti riječi od brojeva i nepotrebnih riječi. Na tako uređenim podatcima ćemo potom napraviti deskriptivno-statistički pregled teksta.
Na tako uređenim podatcima ćemo napraviti deskriptivno-statistički pregled teksta:
## [1] "2021-09-01" "2022-01-10"
## word n
## 1 hrvatska 147
## 2 nespresso 92
## 3 de’longhi 60
## 4 lattego 45
## 5 dom 35
## 6 bauhaus 33
## 7 coffee 31
## 8 kavu 31
## 9 philips 31
## 10 samsung 31
## 11 kave 21
## 12 istria 20
## 13 mikulec 19
## 14 aparat 18
## 15 citroën 18
## 16 jysk 18
## 17 kler 18
## 18 namještaja 18
## 19 pogledajte 18
## 20 qualis 18
## 21 salon 18
## 22 akcija 17
## 23 krups 17
## 24 možete 17
## 25 philipscoffee 17
…i deskriptivno-statistički pregled objava:
## Domena
## 1 6
## # A tibble: 7 x 2
## SOURCE_TYPE n
## <chr> <int>
## 1 web 110
## 2 facebook 73
## 3 instagram 51
## 4 forum 44
## 5 youtube 5
## 6 twitter 4
## 7 reddit 2
## # A tibble: 4 x 2
## kword n
## <chr> <int>
## 1 Nespresso 135
## 2 DeLonghi 84
## 3 Krups 35
## 4 LatteGo 35
Nakon uređivanja podataka i osnovnog pregleda ćemo provesti analizu sentimenta. Za analizu sentimenta je potrebno preuzeti leksikone koji su za hrvatski jezik napravljeni u okviru FER-ovog Croatian Sentiment Lexicon. Analiza sentimenta i uključuje sentiment kroz vrijeme, doprinos riječi sentimentu, ‘wordCloud’ i analizu negativnosti brandova.
Pogledajmo prvo kako izgledaju leksikoni (koje smo učitali još na početku):
## word sentiment brija
## 1: zrin 0.27389 NEG
## 2: okretan 0.42424 NEG
## 3: selekcionirati 0.19291 NEG
## 4: koralj 0.28412 NEG
## 5: čovjek 0.00000 NEG
## 6: malformacija 0.42143 NEG
## 7: zaklinjanje 0.27262 NEG
## 8: silvio 0.53131 NEG
## 9: ment 0.17010 NEG
## 10: izdržljivost 0.50800 NEG
## word sentiment brija
## 1: sabotaža 0.34654 POZ
## 2: klonirati 0.32125 POZ
## 3: preambula 0.31002 POZ
## 4: hotelski 0.44414 POZ
## 5: pridodavati 0.46002 POZ
## 6: oporuka 0.30045 POZ
## 7: desetljeće 0.27544 POZ
## 8: ucrtati 0.19279 POZ
## 9: grgin 0.19294 POZ
## 10: pošten 0.43426 POZ
## word sentiment brija
## 1: zaklanjati 0.453180 NEG
## 2: federacija 0.429600 NEG
## 3: nalikovati 0.593100 NEG
## 4: harač 0.239360 POZ
## 5: tender 0.223380 NEG
## 6: transeuropski 0.089615 POZ
## 7: afera 0.338380 NEG
## 8: funkcionar 0.329730 NEG
## 9: glasovir 0.311510 NEG
## 10: reosiguravatelj 0.225980 POZ
## word sentiment
## 1 slavonski 0
## 2 briga 0
## 3 nedostajati 1
## 4 rješavati 2
## 5 dio 0
## 6 nedavan 0
## 7 kupac 0
## 8 sjedinjen 2
## 9 moderan 2
## 10 drukčiji 0
Provjerimo kretanje sentimenta u vremenu:
Korisno je i promotriti koje riječi najviše doprinose sentimentu (pozitivnom, negativnom i neutralnom):
Korisno je pogledati i WordCloud sentiment. Pogledajmo “obični” WordCloud prije toga:
Ovako izgleda WordCloud koji sadržava i prikaz sentimenta:
Analiza sentimenta se može iskoristiti za pregled negativnosti pojedinih brandova:
## # A tibble: 2 x 4
## kword negWords word negativnostIndex
## <chr> <int> <int> <dbl>
## 1 LatteGo 1 547 0.183
## 2 Nespresso 1 1086 0.0921
…također i pozitivnosti brandova:
## # A tibble: 4 x 4
## kword pozWords word pozitivnostIndex
## <chr> <int> <int> <dbl>
## 1 DeLonghi 41 1368 3.00
## 2 Nespresso 20 1086 1.84
## 3 LatteGo 10 547 1.83
## 4 Krups 4 233 1.72
Nakon analize sentimenta je korisno analizirati i najbitnije riječi. To se radi pomoću IDF (inverse document frequency) metode. IDF metoda omogućuje identifikaciju važnih (ne nužno čestih) riječi u korpusu i može poslužiti za analizu najvažnijih pojmova po brandovima.
## kword word n totWords tf idf tf_idf
## 1 Nespresso nespresso 181 4143 0.043688149 0.2876821 0.012568297
## 2 DeLonghi hrvatska 146 2607 0.056003069 0.6931472 0.038818369
## 3 Nespresso za 144 4143 0.034757422 0.0000000 0.000000000
## 4 Nespresso i 136 4143 0.032826454 0.0000000 0.000000000
## 5 Nespresso u 115 4143 0.027757664 0.0000000 0.000000000
## 6 Nespresso je 108 4143 0.026068067 0.0000000 0.000000000
## 7 DeLonghi u 82 2607 0.031453778 0.0000000 0.000000000
## 8 DeLonghi de’longhi 72 2607 0.027617952 1.3862944 0.038286611
## 9 LatteGo lattego 58 1088 0.053308824 1.3862944 0.073901721
## 10 Krups krups 50 1142 0.043782837 0.6931472 0.030347950
## 11 Nespresso s 47 4143 0.011344436 0.0000000 0.000000000
## 12 DeLonghi za 45 2607 0.017261220 0.0000000 0.000000000
## 13 Nespresso na 45 4143 0.010861694 0.0000000 0.000000000
## 14 DeLonghi s 44 2607 0.016877637 0.0000000 0.000000000
## 15 DeLonghi i 41 2607 0.015726889 0.0000000 0.000000000
## 16 DeLonghi je 39 2607 0.014959724 0.0000000 0.000000000
## 17 LatteGo philips 37 1088 0.034007353 0.6931472 0.023572101
## 18 Nespresso kavu 37 4143 0.008930727 0.0000000 0.000000000
## 19 Nespresso kave 36 4143 0.008689356 0.2876821 0.002499772
## 20 DeLonghi dom 35 2607 0.013425393 1.3862944 0.018611547
## 21 Nespresso ili 35 4143 0.008447985 0.2876821 0.002430334
## 22 DeLonghi bauhaus 33 2607 0.012658228 1.3862944 0.017548030
## 23 DeLonghi na 32 2607 0.012274645 0.0000000 0.000000000
## 24 DeLonghi samsung 31 2607 0.011891063 1.3862944 0.016484513
## 25 Krups i 30 1142 0.026269702 0.0000000 0.000000000
## 26 LatteGo za 30 1088 0.027573529 0.0000000 0.000000000
## 27 Nespresso aparat 28 4143 0.006758388 0.0000000 0.000000000
## 28 Krups za 27 1142 0.023642732 0.0000000 0.000000000
## 29 Nespresso uz 26 4143 0.006275646 0.0000000 0.000000000
## 30 DeLonghi kavu 25 2607 0.009589567 0.0000000 0.000000000
Do sada smo analizirali tekst na osnovi pojedinačnih riječi. Takav pristup ograničava nalaze do kojih je moguće doći kada se tekst sagleda na osnovi fraza (dvije ili n riječi). U sljedećemo koraku ćemo tokenizirati tekst na bigrame (dvije riječi) kako bismo proveli frazeološku analizu. Korištenje bigrama otvara mogućnosti korištenja dodatnih pokazatelja pa ćemo provesti i analizu korelacije među riječima.
## bigram n
## 1 za kavu 64
## 2 de’longhi hrvatska 44
## 3 aparat za 36
## 4 bauhaus hrvatska 33
## 5 nespresso je 24
## 6 je u 22
## 7 istria de’longhi 20
## 8 my istria 20
## 9 jysk hrvatska 18
## 10 kler hrvatska 18
## 11 namještaja kler 18
## 12 qualis salon 18
## 13 salon namještaja 18
## 14 dom s 16
## 15 hrvatska family.hr 16
## 16 mirjanom mikulec 16
## 17 s mirjanom 16
## 18 tražimo dom 16
## 19 dom po 15
## 20 moj dom 15
## 21 za sve 15
## 22 family.hr de’longhi 14
## 23 hrvatska svijet 14
## 24 lesnina xxxl 14
## 25 philipshomeliving coffee 14
Provjerimo koje su riječi najviše korelirane sa izabranim ključnim riječima:
Na kraju provodimo tematsku analizu kao najsloženiji dio do sada provedene analize. Pri tome koristimo LDA (Latent Dirichlet allocation) algoritam kako bismo pronašli najvažnije riječi u algoritamski identificiranim temama. Ovdje je važno primijetiti da prije provedbe LDA modela tokenizirane riječi treba pretvoriti u matricu pojmova (document term matrix) koju ćemo kasnije koristiti kao input za LDA algoritam.
Tematsku analizu je moguće i napraviti na bigramski tokeniziranom tekstu. Tada je često moguće doći do preciznijih i kontekstualno relevantnijih uvida:
U ovom smo predavanju dali uvodni pregled mogućnosti analize teksta u okviru tidytext paketa. Riječ je o skupu alata koji omogućavaju “prilagodbu” teksta u tidy format i daljnu analizu s tidyverse alatima koje smo do sada već dobro upoznali. tidytext nije jedini dostupan okvir za analizu teksta u R, već postoji i niz drugih paketa (vidi na početku) koji omogućavaju korištenje naprednijih (algoritamkskih tehnika.
U predavanju su korišteni tekstovi objavljeni u svim hrvatskim medijima o proizvođačima aparata za kavu u razdoblju četiri mjeseca. Predavanje je imalo za cilj demonstrirati uvodne mogućnosti tekstualne analize te osnovnih tehnika i alata.
Analiza teksta (NLP) je trenutno (brzo) rastuće istraživačko područje sa sve većim brojem primjena, novih etodoloških pristupa i perspektiva. Dostupno je mnoštvo kvalitetnih i korisnih resursa pa se zainteresiranim studentima preporuča uključivanje u ovu (vrlo perspektivnu) istraživačku paradigmu.
Izradio lusiki
Data from Mediatoolkit